package com.huawei.cloud.phone.management.domain.pkg;

import java.util.List;
import java.util.Optional;

public interface PkgGateway {

    /**
     * 存储文件
     *
     * @param data APK文件数据
     * @return 失败结果
     */
    Optional<String> pushFile(List<ObsFileData> data);

    /**
     * 获取应用文件，并给对应手机安装
     *
     * @param phoneIds 手机ID
     * @param data     APK数据
     * @return 失败结果
     */
    List<PkgResult> installApk(List<String> phoneIds, List<ObsFileData> data);

    /**
     * 卸载应用
     *
     * @param phoneIds 手机ID
     * @param pkgName 需要卸载的应用名称
     * @return 失败结果
     */
    List<PkgResult> uninstallApk(List<String> phoneIds, String pkgName);

    /**
     * 卸载共享应用
     *
     * @param phoneIds 手机ID
     * @param pkgName 需要卸载的应用名称
     * @return 失败结果
     */
    List<PkgResult> uninstallTar(List<String> phoneIds, String pkgName);

    /**
     * 将手机上的应用打包成tar包，并推送到OBS上
     *
     * @param phoneId 手机ID
     * @param data 应用数据
     * @return 失败结果
     */
    Optional<PkgResult> prepareTar(String phoneId, PkgData.TarData data);

    /**
     * 将OBS上的应用推动到手机服务器上
     *
     * @param serverIds 手机服务器ID
     * @param data 应用数据
     * @return 失败结果
     */
    List<PkgResult> pushShareTar(List<String> serverIds, PkgData.TarData data);

    /**
     * 给手机安装共享应用
     *
     * @param phoneIds 手机ID
     * @param pkgName 应用名称
     * @return 失败结果
     */
    List<PkgResult> installTar(List<String> phoneIds, String pkgName);
}
